package pl.edu.agh.se.carsexpertsystem.model;

import java.util.HashMap;
import java.util.Map;

/**
 * Tworzy fake'owy model
 *
 * @author piotrek
 */
public class ModelCreator {

    private ModelCreator() {
    }
    
    public static Map<String, CarModel> getCars() {
        Map<String, CarModel> list = new HashMap<>();

        CarManufacturer opel = new CarManufacturer("Opel", Level.GOOD, Level.GOOD);
        CarManufacturer bmw = new CarManufacturer("BMW", Level.EXCELLENT, Level.EXCELLENT);
        CarManufacturer peugeot = new CarManufacturer("Peugeot", Level.AVERAGE, Level.AVERAGE);
        CarManufacturer fiat = new CarManufacturer("Fiat", Level.AVERAGE, Level.POOR);
        CarManufacturer skoda = new CarManufacturer("Skoda", Level.POOR, Level.POOR);
        CarManufacturer ford = new CarManufacturer("Ford", Level.GOOD, Level.GOOD);
        CarManufacturer volkswagen = new CarManufacturer("Volkswagen", Level.GOOD, Level.EXCELLENT);
        CarManufacturer mercedes = new CarManufacturer("Mercedes", Level.EXCELLENT, Level.GOOD);

        CarModel opelCorsa = new CarModel("Corsa", opel, 40000, 285, 5, 6, 80, CarSegment.ECONOMIC);
        list.put("Corsa", opelCorsa);

        CarModel opelAstra = new CarModel("Astra", opel, 50000, 370, 5, 6.3, 115, CarSegment.FAMILY);
        list.put("Astra", opelAstra);

        CarModel opelInsignia = new CarModel("Insignia", opel, 90000, 500, 5, 10, 115, CarSegment.SALOON_CAR);
        list.put("Insignia", opelInsignia);

        CarModel bmw1 = new CarModel("seria 1", bmw, 100000, 330, 5, 8.5, 90, CarSegment.FAMILY);
        list.put("seria 1", bmw1);

        CarModel bmw3 = new CarModel("seria 3", bmw, 130000, 460, 5, 7, 170, CarSegment.SALOON_CAR);
        list.put("seria 3", bmw3);

        CarModel bmwZ4 = new CarModel("Z4", bmw, 160000, 260, 2, 9, 220, CarSegment.SPORT);
        list.put("Z4", bmwZ4);

        CarModel bmwX5 = new CarModel("X5", bmw, 270000, 620, 7, 11, 270, CarSegment.SUV);
        list.put("X5", bmwX5);

        CarModel peugeotBoxer = new CarModel("Boxer", peugeot, 110000, 10000, 3, 9, 130, CarSegment.LIGHT_COMMERCIAL_VEHICLE);
        list.put("Boxer", peugeotBoxer);

        CarModel fiatDucato = new CarModel("Ducato", fiat, 95000, 10000, 3, 8, 160, CarSegment.LIGHT_COMMERCIAL_VEHICLE);
        list.put("Ducato", fiatDucato);

        CarModel fiatPunto = new CarModel("Punto", fiat, 38000, 264, 5, 6, 60, CarSegment.ECONOMIC);
        list.put("Punto", fiatPunto);

        CarModel fiatSeicento = new CarModel("Seicento", fiat, 30000, 170, 5, 5, 40, CarSegment.ECONOMIC);
        list.put("Seicento", fiatSeicento);

        CarModel skodaFabia = new CarModel("Fabia", skoda, 40000, 440, 5, 6.5, 64, CarSegment.ECONOMIC);
        list.put("Fabia", skodaFabia);

        CarModel skodaOctavia = new CarModel("Octavia", skoda, 55000, 560, 5, 8, 102, CarSegment.FAMILY);
        list.put("Octavia", skodaOctavia);

        CarModel fordFiesta = new CarModel("Fiesta", ford, 44000, 268, 5, 6.1, 70, CarSegment.ECONOMIC);
        list.put("Fiesta", fordFiesta);

        CarModel fordFocus = new CarModel("Focus", ford, 62000, 385, 5, 7.5, 100, CarSegment.FAMILY);
        list.put("Focus", fordFocus);

        CarModel fordMondeo = new CarModel("Mondeo", ford, 85000, 500, 5, 8, 110, CarSegment.FAMILY);
        list.put("Mondeo", fordMondeo);
        
        CarModel fordTransit = new CarModel("Transit", ford, 105000, 10000, 3, 8.5, 110, CarSegment.LIGHT_COMMERCIAL_VEHICLE);
        list.put("Transit", fordTransit);
        
        CarModel volkswagenPolo = new CarModel("Polo", volkswagen, 45000, 270, 5, 6.9, 80, CarSegment.ECONOMIC);
        list.put("Polo", volkswagenPolo);
        
        CarModel volskwagenGolf = new CarModel("Golf", volkswagen, 62000, 393, 5, 6.6, 160, CarSegment.FAMILY);
        list.put("Golf", volskwagenGolf);
        
        CarModel volskwagenPassat = new CarModel("Passat", volkswagen, 85000, 565, 5, 8, 102, CarSegment.FAMILY);
        list.put("Passat", volskwagenPassat);
        
        CarModel mercedesS = new CarModel("klasa S", mercedes, 350000, 560, 5, 13, 340, CarSegment.SALOON_CAR);
        list.put("klasa S", mercedesS);

        return list;
    }
}
